package com.lsh.service.impl;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;

/**
 * @author ：LiuShihao
 * @date ：Created in 2021/3/19 8:59 上午
 * @desc ：如果消息未能投递到目标 queue 里将触发回调 returnCallback ，
 *         一旦向 queue 投递消息未成功，这里一般会记录下当前消息的详细投递数据，方便后续做重发或者补偿等操作。
 *实现接口ReturnCallback，重写 returnedMessage() 方法，方法有五个参数message（消息体）、replyCode（响应code）、replyText（响应内容）、exchange（交换机）、routingKey（队列）。
 */
@Slf4j
@Component
public class ReturnCallbackServiceImpl implements RabbitTemplate.ReturnCallback {
    /**
     *
     * @param message       消息体
     * @param replyCode     响应code
     * @param replyText     响应内容
     * @param exchange      交换机
     * @param routingKey    队列
     */
    @Override
    public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
        log.error("ReturnCallback 退回模式：returnedMessage ===> replyCode="+replyCode+" ,replyText="+replyText+" ,exchange="+exchange+" ,routingKey="+routingKey);
    }
}